int get_common_ancestor(int p1, int p2){ 
 long __res; 
 __asm__ volatile ( 
"movl $243, %%eax;" 
"movl %1, %%ebx;" 
"movl %2, %%ecx;" 
"int $0x80;" 
"movl %%eax,%0" 
: "=m" (__res)  
: "m" (p1), "m" (p2) 
: "%eax","%ebx","%ecx"
); 
      if ((unsigned long)(__res) >= (unsigned long)(-125)) { 
  errno = -(__res); 
  __res = -1; 
 } 
return (int)(__res); 
}

int get_path(int p1, int p2, int *array, int size){ 
 long __res; 
 __asm__ volatile ( 
"movl $244, %%eax;" 
"movl %1, %%ebx;" 
"movl %2, %%ecx;" 
"movl %3, %%edx;" 
"movl %4, %%esi;" 
"int $0x80;" 
"movl %%eax,%0" 
: "=m" (__res)  
: "m" (p1), "m" (p2), "m" ((long)array), "m" (size) 
: "%eax","%ebx","%ecx","%edx","%esi" 
); 
      if ((unsigned long)(__res) >= (unsigned long)(-125)) { 
  errno = -(__res); 
  __res = -1; 
 } 
return (int)(__res); 
}
